//=============================================================================

#ifndef AJOINT_H
  #define AJOINT_H

//=============================================================================

#include "doCommon.h"
#include "aAnimationsTrack.h"

//=============================================================================

class aJoint
{
  public:
    aJoint();
      aItem<aAnimationsTrack>* ajGetAnimationByName(const aString& name)const;
      void ajCopyDataToCurrentMatrix();
      void ajCloneJoint(const aJoint& joint);
    ~aJoint();

  public:
    aItem<aJoint>* parent;
    aList<aJoint> child;
    aString name;
    float bindMatrix[MATRIX_SIZE];
    /*
      0, 1, 2, 3      = Ix Iy Iz 0
      4, 5, 6, 7      = Jx Jy Jz 0
      8, 9, 10, 11    = Kx Ky Kz 0
      12, 13, 14, 15  =  x  y  z 1 (in the parent system)
    */
    float currentMatrix[MATRIX_SIZE];
    aVector bindPosition; //in the global system | bind
    aVector bindIJK[3];   //current system | bind
    aVector position;     //in the global system
    aVector ijk[3];       //current system
    float bindIJKValue[3];
    float* weights;
    unsigned int vertexesCount;
    aList<aAnimationsTrack> track;
};

//=============================================================================

#endif

//=============================================================================
